// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ui/base/cursor/cursor.h"

namespace ui {

Cursor::Cursor()
    : native_type_(0)
    , platform_cursor_(0)
    , device_scale_factor_(0.0f)
{
}

Cursor::Cursor(int type)
    : native_type_(type)
    , platform_cursor_(0)
    , device_scale_factor_(0.0f)
{
}

Cursor::Cursor(const Cursor& cursor)
    : native_type_(cursor.native_type_)
    , platform_cursor_(cursor.platform_cursor_)
    , device_scale_factor_(cursor.device_scale_factor_)
{
    if (native_type_ == kCursorCustom)
        RefCustomCursor();
}

Cursor::~Cursor()
{
    if (native_type_ == kCursorCustom)
        UnrefCustomCursor();
}

void Cursor::SetPlatformCursor(const PlatformCursor& platform)
{
    if (native_type_ == kCursorCustom)
        UnrefCustomCursor();
    platform_cursor_ = platform;
    if (native_type_ == kCursorCustom)
        RefCustomCursor();
}

void Cursor::Assign(const Cursor& cursor)
{
    if (*this == cursor)
        return;
    if (native_type_ == kCursorCustom)
        UnrefCustomCursor();
    native_type_ = cursor.native_type_;
    platform_cursor_ = cursor.platform_cursor_;
    if (native_type_ == kCursorCustom)
        RefCustomCursor();
    device_scale_factor_ = cursor.device_scale_factor_;
}

} // namespace ui
